% 分集技术性能分析与比较主脚本
% 本脚本演示各种分集技术的性能
% 包括：瑞利衰落信道中信号检测、时间分集、天线分集、频率分集和信道不确定性影响
% 作者：Yong Zhou 著作配套代码
% 最后更新：2024年

clc; clear all; close all;

% 添加路径
addpath('../Common');
colors = color_definitions();

fprintf('=====================================\n');
fprintf('分集技术性能分析仿真\n');
fprintf('基于Yong Zhou著作配套代码\n');
fprintf('=====================================\n\n');

%% 参数设置
EbN0_dB = 0:5:25; % Eb/N0范围 (dB)
num_bits = 10000; % 仿真比特数
time_slots = [1, 2, 4, 8, 16]; % 时间分集时隙数
num_antennas = [1, 2, 4, 8]; % 天线数量
num_subcarriers = [1, 4, 8, 16]; % 子载波数量
uncertainty_levels = [0, 0.1, 0.2, 0.3]; % 信道不确定性水平

%% 3.1 瑞利衰落信道中信号检测
fprintf('3.1 瑞利衰落信道中信号检测性能分析...\n');
[ber_rayleigh, fig_rayleigh] = rayleigh_detection(EbN0_dB, num_bits);
fprintf('瑞利衰落检测分析完成！\n\n');

%% 3.2 时间分集
fprintf('3.2 时间分集性能分析...\n');
[ber_time_div, diversity_order, fig_time] = time_diversity(EbN0_dB, num_bits, time_slots);
fprintf('时间分集分析完成！\n\n');

%% 3.3 天线分集
fprintf('3.3 天线分集性能分析...\n');
[ber_antenna_div, fig_antenna] = antenna_diversity(EbN0_dB, num_bits, num_antennas);
fprintf('天线分集分析完成！\n\n');

%% 3.4 频率分集
fprintf('3.4 频率分集性能分析...\n');
[ber_freq_div, fig_freq] = frequency_diversity(EbN0_dB, num_bits, num_subcarriers);
fprintf('频率分集分析完成！\n\n');

%% 3.5 信道不确定性影响
fprintf('3.5 信道不确定性影响分析...\n');
[ber_uncertainty, capacity_loss, fig_uncertainty] = channel_uncertainty(EbN0_dB, num_bits, uncertainty_levels);
fprintf('信道不确定性分析完成！\n\n');

%% 总结分析
fprintf('=== 总结分析 ===\n');
fprintf('1. 分集技术显著改善衰落信道性能\n');
fprintf('2. 分集阶数与分集支路数成正比\n');
fprintf('3. MRC合并性能最优，SC实现最简单\n');
fprintf('4. 频率分集有效对抗频率选择性衰落\n');
fprintf('5. 信道不确定性会降低分集增益\n\n');

fprintf('所有仿真完成！请查看生成的图形结果。\n');

%% 保存结果
% 创建结果文件夹（在当前章节目录下）
if ~exist('results', 'dir')
    mkdir('results');
end

% 保存图形
if isvalid(fig_rayleigh)
    saveas(fig_rayleigh, 'results/chapter3_rayleigh_detection.png');
end
if isvalid(fig_time)
    saveas(fig_time, 'results/chapter3_time_diversity.png');
end
if isvalid(fig_antenna)
    saveas(fig_antenna, 'results/chapter3_antenna_diversity.png');
end
if isvalid(fig_freq)
    saveas(fig_freq, 'results/chapter3_frequency_diversity.png');
end
if isvalid(fig_uncertainty)
    saveas(fig_uncertainty, 'results/chapter3_channel_uncertainty.png');
end

fprintf('结果已保存到 Chapter03_Diversity/results 文件夹中。\n');